
//设计你的循环队列实现
/*
你的实现应该支持如下操作：

MyCircularQueue(k): 构造器，设置队列长度为 k 。
Front: 从队首获取元素。如果队列为空，返回 -1 。
Rear: 获取队尾元素。如果队列为空，返回 -1 。
enQueue(value): 向循环队列插入一个元素。如果成功插入则返回真。
deQueue(): 从循环队列中删除一个元素。如果成功删除则返回真。
isEmpty(): 检查循环队列是否为空。
isFull(): 检查循环队列是否已满。
*/



class MyCircularQueue {
private int[] elem;
private int front;
private int rear;
    public MyCircularQueue(int k) {
      this.elem=new int[k+1];
    }

    public boolean enQueue(int value) {
if (isFull()){
    return false;
}
elem[rear]=value;
rear=(rear+1)%elem.length;
return true;

    }
    public boolean deQueue() {
if (isEmpty()){
    return false;
}
front=(front+1)%elem.length;
return true;
    }
    public int Front() {
if (isEmpty()){
    return -1;
}
return elem[front];
    }

    public int Rear() {
if (isEmpty()){
    return -1;
}
int ret=(rear==0)?elem.length-1:rear-1;
return elem[ret];
    }
    public boolean isEmpty() {
return front==rear;
    }

    public boolean isFull() {
return (rear+1)%elem.length==front;

    }
}